﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入一个水果名称");
            string str1 = Console.ReadLine();
            Fruit fruit = (Fruit)Enum.Parse(typeof(Fruit), str1);
            Text(fruit);

            Console.WriteLine("请输入一个职业");
            string str2 = Console.ReadLine();
            RPG rPG = (RPG)Enum.Parse(typeof(RPG), str2);
            Text(rPG);

            Console.WriteLine(" ");
            refout();

            Console.WriteLine(" ");
            Jintai1();

            Console.WriteLine(" ");
            Jintai2();

            Console.WriteLine(" ");
            teachar();

        }

        public static void refout()
        {
            //1、定义一个方法，求一个整数数组中的最大值，最小值，和，平均数。
            //如果是一个方法只能有一个返回值，那只能每一个都得定义一个方法来实现，不过有了ref和out这实现起来就方便多了。
            int[] arr = { 10, 20, 30, 40 };
            int max;
            int min;
            double avg;
            int sum = GetIntResult(arr, out avg, out max, out min);
            Console.WriteLine("和：{0}\t平均值：{1}\t最大值：{2}\t最小值：{3}", sum, avg, max, min);

            int[] arr1 = { 10, 20, 30, 40, 50, 60 };
            float avg1 = 0;
            int max1 = 0;
            int min1 = 0;
            int sum1 = GetIntResult1(arr1, ref avg1, ref max1, ref min1);
            Console.WriteLine("和：{0}\t平均值：{1}\t最大值：{2}\t最小值：{3}", sum1, avg1, max1, min1);
            Console.Read();
        }

        public static int GetIntResult(int[] arry, out double avg, out int max, out int min)
        {
            int sum = 0;
            max = arry[0];
            min = arry[0];//使用out关键字时，必须在离开方法前对out关键字修饰的参数初始化
            for (int i = 0; i < arry.Length; i++)
            {
                sum += arry[i];

                if (max < arry[i])
                {
                    max = arry[i];
                }
                if (min > arry[i])
                {
                    min = arry[i];
                }
            }
            avg = sum / arry.Length;
            return sum;
        }
        public static int GetIntResult1(int[] arry, ref float avg1, ref int max1, ref int min1)
        {
            int sum = 0;
            max1 = arry[0];
            min1 = arry[0];
            for (int i = 0; i < arry.Length; i++)
            {
                sum += arry[i];

                if (max1 < arry[i])
                {
                    max1 = arry[i];
                }
                if (min1 > arry[i])
                {
                    min1 = arry[i];
                }
            }
            avg1 = sum / arry.Length;
            return sum;
        }

        public static void Jintai1()
        {
            //写一个工具类StringUtil，在里面定义一个静态方法，用来判断字符串是否为空。
            //如果字符串是null，或者字符串是空""，或者字符串是N个空格"  "，那这个方法返回true，否则返回false
            //然后在主类中（有Main方法的类）调用测试。
            string str = "不可能";
            StringUtil dd = new StringUtil();
            StringUtil.zf(str);
            StringUtil.PrintMsg();
        }

        public static void Jintai2()
        {
            //写一个工具类ArrayUtil，在里面定义一个静态方法，用来判断数组是否为空。
            //如果数组是null，或者数组长度为0，那此方法返回true，否则返回false
            //然后在主类中（有Main方法的类）调用测试。
            ArrayUtil aa = new ArrayUtil();
            ArrayUtil.dong();
        }
        public enum Fruit
        {
            香蕉,
            苹果,
            西瓜,
            哈密瓜,
            草莓,
            葡萄,
            奇异果
        }
        public static void Text(Fruit fruit)
        {
            switch (fruit)
            {
                case Fruit.香蕉:
                    Console.WriteLine("获得：10");
                    break;
                case Fruit.苹果:
                    Console.WriteLine("获得：20");
                    break;
                case Fruit.西瓜:
                    Console.WriteLine("获得：30");
                    break;
                case Fruit.哈密瓜:
                    Console.WriteLine("获得：40");
                    break;
                case Fruit.草莓:
                    Console.WriteLine("获得：45");
                    break;
                case Fruit.葡萄:
                    Console.WriteLine("获得：50");
                    break;
                case Fruit.奇异果:
                    Console.WriteLine("获得：55");
                    break;
            }
        }
        public enum RPG
        {
            战士,
            法师,
            精灵
        }
        public static void Text(RPG rPG)
        {

            switch (rPG)
            {
                case RPG.战士:
                    Console.WriteLine("战士的技能：碎石打击、烈焰锚钩、战斗咆哮");
                    break;

                case RPG.法师:
                    Console.WriteLine("法师的技能：巨浪冲击、元素突击、复仇杀戮");
                    break;
                case RPG.精灵:
                    Console.WriteLine("精灵的技能：减速陷阱、能量浪潮、旋风剑舞");
                    break;
            }
        }
        public static void teachar() {
            teachar1 aa = new teachar1();
            aa.Name1 = "孙悟空";
            aa.Name2 = "猪八戒";
            aa.Name3 = "沙和尚";
            aa.Name4 = "白龙马";
            aa.Teacher = "唐三藏";
            aa.Teacher2 = "嫦娥";
            aa.dy();
        }
    }
}
